﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using PSE.ProcessManager.Client.Process;
using PSE.ProcessManager.Entity;

namespace Sinacor.Infra.Core.ProcessManager.Client
{
    public interface IBaseCommunicationProcess : IDisposable
    {
        bool IsProcessRunning();

        bool IsConnected { get; }
        void Connect();
        event EventHandler Connected;

        event EventHandler Initialized;

        event EventHandler<ProcessStatusEventArgs> ProcessStatusReceived;

        event EventHandler Finalized;

        void Abort();
        event EventHandler Aborted;
        
        void Disconnect();
        event EventHandler Disconnected;

        List<LogEntity> RetrieveLogList();
        LogEntity RetrieveLastProcessLog();
    }
}
